<?php
Yii::import('application.components.Reference');
Yii::import('application.components.U');
class NotaDebetController extends GxController
{
    public function actionCreate()
    {
        if (!Yii::app()->request->isAjaxRequest) $this->redirect(url('/'));
        if (isset($_POST) && !empty($_POST)) {
            Yii::import('application.components.Gl');
            $gl = new Gl();
            $msg = 'Nota debet berhasil dibuat.';
            $detils = CJSON::decode($_POST['detil']);
            app()->db->autoCommit = false;
            $transaction = Yii::app()->db->beginTransaction();
            try {
                $nota_debet = new NotaDebet;
                $ref = new Reference;
                $docref = $ref->get_next_reference(NOTADEBET);
                foreach ($_POST as $k => $v) {
                    if (is_angka($v)) $v = ($k == 'total') ? -get_number($v) : get_number($v);
                    $_POST['NotaDebet'][$k] = $v;
                }
                $_POST['NotaDebet']['doc_ref'] = $docref;
                $nota_debet->attributes = $_POST['NotaDebet'];
                if (!$nota_debet->save())
                    throw new Exception("Gagal menyimpan nota debet. " . CHtml::errorSummary($nota_debet));
                foreach ($detils as $detil) {
                    $nota_debet_detil = new NotaDebetDetil;
                    $_POST['NotaDebetDetil']['konsumen_id'] = $detil['konsumen_id'];
                    $_POST['NotaDebetDetil']['lembar'] = get_number($detil['lembar']);
                    $_POST['NotaDebetDetil']['nilai'] = -get_number($detil['nilai']);
                    $_POST['NotaDebetDetil']['amount'] = -get_number($detil['amount']);
                    $_POST['NotaDebetDetil']['nota_debet_id'] = $nota_debet->nota_debet_id;
                    $nota_debet_detil->attributes = $_POST['NotaDebetDetil'];
                    if (!$nota_debet_detil->save())
                        throw new Exception("Gagal menyimpan nota debet detil. " . CHtml::errorSummary($nota_debet_detil));
                }
                // utang dagang Debet
                $gl->add_gl(NOTADEBET, $nota_debet->nota_debet_id, $nota_debet->tgl, $nota_debet->doc_ref,
                    UTANGDAGANG, '', '', $nota_debet->total);
                // Kas Kredit
                $gl->add_gl(NOTADEBET, $nota_debet->nota_debet_id, $nota_debet->tgl, $nota_debet->doc_ref,
                    $nota_debet->idBank->account_code, '', '', -$nota_debet->total);
                $gl->validate();
                $ref->save(NOTADEBET, $nota_debet->nota_debet_id, $docref);
                $transaction->commit();
                $status = true;
            } catch (Exception $ex) {
                $transaction->rollback();
                $status = false;
                $msg = $ex->getMessage();
            }
            echo CJSON::encode(array(
                'success' => $status,
                'id' => $docref,
                'msg' => $msg));
            Yii::app()->end();
        }
    }
    public function actionUpdate($id)
    {
        $model = $this->loadModel($id, 'NotaDebet');
        if (isset($_POST) && !empty($_POST)) {
            foreach ($_POST as $k => $v) {
                if (is_angka($v)) $v = get_number($v);
                $_POST['NotaDebet'][$k] = $v;
            }
            $msg = "Data gagal disimpan";
            $model->attributes = $_POST['NotaDebet'];
            if ($model->save()) {
                $status = true;
                $msg = "Data berhasil di simpan dengan id " . $model->nota_debet_id;
            } else {
                $msg .= " " . implode(", ", $model->getErrors());
                $status = false;
            }
            if (Yii::app()->request->isAjaxRequest) {
                echo CJSON::encode(array(
                    'success' => $status,
                    'msg' => $msg
                ));
                Yii::app()->end();
            } else {
                $this->redirect(array('view', 'id' => $model->nota_debet_id));
            }
        }
    }
    public function actionDelete($id)
    {
        if (Yii::app()->request->isPostRequest) {
            $msg = 'Data berhasil dihapus.';
            $status = true;
            try {
                $this->loadModel($id, 'NotaDebet')->delete();
            } catch (Exception $ex) {
                $status = false;
                $msg = $ex;
            }
            echo CJSON::encode(array(
                'success' => $status,
                'msg' => $msg));
            Yii::app()->end();
        } else
            throw new CHttpException(400,
                Yii::t('app', 'Invalid request. Please do not repeat this request again.'));
    }
    public function actionIndex()
    {
//        if (isset($_POST['limit'])) {
//            $limit = $_POST['limit'];
//        } else {
//            $limit = 20;
//        }
//        if (isset($_POST['start'])) {
//            $start = $_POST['start'];
//        } else {
//            $start = 0;
//        }
        $criteria = new CDbCriteria();
        $criteria->select = "nota_debet_id,tgl,doc_ref,-total total,no_bukti,supplier_id,
            id_bank,lunas,salesman_id,ket";
        $criteria->addCondition('tgl = :tgl');
        $criteria->params = array(':tgl'=>$_POST['tgl']);
//        if ((isset ($_POST['mode']) && $_POST['mode'] == 'grid') ||
//            (isset($_POST['limit']) && isset($_POST['start']))
//        ) {
//            $criteria->limit = $limit;
//            $criteria->offset = $start;
//        }
        $model = NotaDebet::model()->findAll($criteria);
        $total = NotaDebet::model()->count($criteria);
        $this->renderJson($model, $total);
    }
}